'use strict';

module.exports = options => {
    return async function (ctx, next) {
        const token = ctx.request.header.authorization.match(/Bearer (.+)/)[1];
        if (!token) {
            // ctx.status = 401;
            ctx.body = {
                msg: '没有登录',
                code: 401
            };
            return;
        }
        // 拿到用户信息
        let decode = await ctx.app.jwt.verify(token, ctx.app.config.jwt.secret);
        // 权限判断
        if(options && options.roles && !options.roles.includes(decode.role)) {
            // ctx.status = 403;
            ctx.body = {
                msg: '没权限！',
                code: 403
            };
            return;
        }

        await next();
    }
};
